﻿using System;
using System.Web.Mvc;

using Web.Generics;

using BolaoDNA.Services;
using BolaoDNA.DomainModel;

using BolaoDNA.WebMvc.Areas.Admin.ViewModels;
using System.Collections.Generic;

namespace BolaoDNA.WebMvc.Areas.Admin.Controllers
{
    [Authorize(Roles="Admin")]
    public class CompeticaoController : GenericViewModelController<Competicao, CompeticaoViewModel>
    {
        private CompeticaoService service;
        private JogoService jogoService;
        public CompeticaoController(CompeticaoService service, JogoService jogoService) : base(service)
        {
            this.service = service;
            this.jogoService = jogoService;
        }

        public ActionResult EditarJogos(Int32 id, Boolean? resultadoHoraInvalido)
        {
            var competicao = service.SelectById(id);
            ViewData["ResultadoHoraInvalido"] = resultadoHoraInvalido;
            return View(competicao);
        }

        public ActionResult SalvarResultados(Int32 id, IList<Int32> idJogo, IList<Int32?> PlacarCasa, IList<Int32?> PlacarVisitante)
        {
            bool resultadoHoraInvalido = false;
            for (var i = 0; i < idJogo.Count; i++)
            {
                if (!PlacarCasa[i].HasValue || !PlacarVisitante[i].HasValue) continue;

                var jogo = jogoService.SelectById(idJogo[i]);

                if (jogo.DataHora < DateTime.Now.AddHours(2))
                {

                    jogo.PlacarCasa = PlacarCasa[i];
                    jogo.PlacarVisitante = PlacarVisitante[i];

                    jogoService.Update(jogo);
                }
                else
                {
                    resultadoHoraInvalido = true;
                }
            }

            return RedirectToAction("EditarJogos", new { ID = id, ResultadoHoraInvalido = resultadoHoraInvalido });
        }
    }
}
